<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class MkController extends Command
{

    protected $signature = 'make:controller2 {name}';

    protected $description = '创建一个继承BaseController的控制器';

    public function __construct()
    {
        parent::__construct();
    }

    public function handle()
    {
        //获取参数
        $args = $this->arguments();
        // 判断是否有 /
        $fig = strripos($args['name'], "/");

        //类名
        $class_name = $fig ? substr($args['name'], ($fig + 1)) : $args['name'];

        //文件名
        $file_name = $args['name'] . '.php';

        // 文件地址
        $file_url = app_path() . '/Http/Controllers/' . $file_name;

        $name = $fig ? substr($args['name'], 0, $fig) : '';
        //命名空间
        $namespace = $fig ? 'App\Http\Controllers\\' . $name : 'App\Http\Controllers';

        //目录
        $file_path = dirname($file_url);

        $template = file_get_contents(dirname(__FILE__) . '/subs/controller.stub');

        $source = str_replace('{{namespace}}', $namespace, $template);
        $source = str_replace('{{class_name}}', $class_name, $source);

        //是否已存在相同文件
        if (file_exists($file_url)) {
            $this->error('文件已存在');
            exit;
        }

        //创建
        if (file_exists($file_path) === false) {
            if (mkdir($file_path, 0777, true) === false) {
                $this->error('目录' . $file_path . '没有写入权限');
                exit;
            }
        }

        //写入
        if (!file_put_contents($file_url, $source)) {
            $this->error('创建失败！');
            exit;
        }

        $this->info('创建成功！');
    }
}
